home *** CD-ROM | disk | FTP | other *** search
/ The X-Philes (2nd Revision) / The X-Philes Number 1 (1995).iso / xphiles / hp48_2 / mem.sca < prev    next >
Text File  |  1991-04-12  |  6KB  |  152 lines

  1. Article 1487 of comp.sys.handhelds:
  2. Path: en.ecn.purdue.edu!pur-ee!mentor.cc.purdue.edu!purdue!tut.cis.ohio-state.edu!pacific.mps.ohio-state.edu!zaphod.mps.ohio-state.edu!think!mintaka!ogicse!orstcs!jacobs.CS.ORST.EDU!smithj
  3. From: smithj@jacobs.CS.ORST.EDU (Jeremy Smith)
  4. Newsgroups: comp.sys.handhelds
  5. Subject: HP 48sx memory strings
  6. Message-ID: <16848@orstcs.CS.ORST.EDU>
  7. Date: 14 Mar 90 08:07:58 GMT
  8. Sender: usenet@orstcs.CS.ORST.EDU
  9. Reply-To: smithj@jacobs.CS.ORST.EDU.UUCP (Jeremy Smith)
  10. Organization: Oregon State University - CS - Corvallis Oregon
  11. Lines: 137
  12.  
  13. > From: dan@Apple.COM (Dan Allen)
  14. > For example, I was using the debugger to dump memory to the serial port
  15. > at 9600 baud.  I had no idea what I was doing, but all I did was run
  16. > MacTerminal at 9600 baud and voila, I had the ROM image on my Mac as a
  17. > text file...
  18.  
  19.      I dumped out memory to the PC and then translated the code from HEX
  20. to ASCII in order to locate strings.  There was nothing unusual (like
  21. poems, peoples names, and so on) but it often acts as a point of
  22. departure for further study to know locations of strings.
  23.      Hook the 48 to the PC and establish contact.  Enter the debugger
  24. (ON-D simultaneously, back arrow). Press . (decimal point) for a dump of
  25. the eight bytes in the display, or spc for a whole 32k starting at the
  26. current address.
  27.   Here is a string rich area as dumped and translated:
  28.  
  29. 719B0:403505440240449  SPD  DI     72000:8E920C7200C2A20  ) ' ,* 
  30. 719C0:3505409425F4D44 SP IROM      72010:000001000B20009        I
  31. 719D0:942514D440B4244 IRAM KBD     72020:E63757666696369 nsuffici
  32. 719E0:1340B424442330B 1 KBD2 K     72030:56E64702D456D6F ent Memo
  33. 719F0:2444E0543544022 BD ESD 2     72040:2797B2000449627 ry+ @ &W
  34. 71A00:130365020223130 10V  210     72050:63647F627970225 6F &  "U
  35. 71A10:653054354420F4B V ESD OK     72060:63657273796F6E6 6V'7    
  36. 71A20:60F4B4D24383024  OK-48       72070:200055E64656669   Undefi
  37. 71A30:641494C44055F5C FAIL U_L     72080:E6564602C4F6361 ned Loca
  38. 71A40:244055142545A05 B UART U     72090:C602E416D656B20 l Name+ 
  39. 71A50:F5C4240285D4944 _LB XMIT     720A0:055E646566696E6 P FVf  V
  40. 71A60:40904596D656029   Time I     720B0:6460285C4942402 F    $  
  41. 71A70:E69647603547162 nit Star     720C0:416D656D1000D45   V   Me
  42. 71A80:47A360641696C60 t: Fail      720D0:D6F627970234C65 mory Cle
  43. 71A90:A34005F42545402 : PORT R     720E0:16279100005F677 ar    vW
  44. 71AA0:14D413402514D42 AM1 RAM2     720F0:62702C4F6374751 &   6GW 
  45. 71AB0:409425C42440942  IRLB IR     72100:00751627E696E67  Warning
  46. 71AC0:94F4403554E4444 IO SEND      72110:A37200094E66716 :'   f  
  47. 71AD0:25543465E065562 RECV Ver     72120:696460234162746  F 2 &G 
  48. 71AE0:3796F6E60284054 sion HP4     72130:244164716F1000F B F    O
  49. 71AF0:83D2141134F6079 8-A Copy     72140:26A65636470294E bject In
  50. 71B00:279676864702840 right HP     72150:025537569200005  Use)   
  51. 71B10:021393839376713  1989g C     72160:6274702E4F64702 &G   F  
  52.  
  53. Note that each byte has its nibbles reversed.
  54.  
  55. > From: billw@hpcvra.CV.HP.COM (William C Wickes)
  56. >
  57. > To make life more interesting, the fields are written backwards (this
  58. > is how the CPU reads memory), so e.g. the prolog is written E1B20.
  59.  
  60. Here are some other addresses with strings occurring at or after that
  61. address (tables indicate what could be look-up tables - just my notes as
  62. I was browsing):
  63.  
  64. 045d0: LowBat
  65. 18f70: week(s) day(s) hour(s) minute(s) second(s) ticks
  66. 1ff30: Intercept
  67. 1ff50: Slope
  68. 218d0: SYSRAM
  69. 253a0: TO DIR ELSE END UNTIL REPEAT NEXT STEP THEN
  70. 29710: Invalid Expression
  71. 2d3b0: PACKET ERRMSG LNAME OPOS KMODE
  72. 2ea60: IOPAR
  73. 31f80: PRTPAR
  74. 34dc0: symbx
  75. 39250: - 39550: tables
  76. 3b750: DBUG
  77. 3c070: HIST
  78. 3c370: RESET
  79. 3c7d0: TIME EXEC SET DAY MIN NONE DATE NEW EDIT LENG VOL SPEED FORCE
  80.        POWR TEMP ANGL VISC then lots of unit abbreviations...
  81. 3f410: PORT
  82. 3fad0: SKEY
  83. 48770: SOLVR
  84. 487d0: PLOTR
  85. 48a80: STK
  86. 48ad0: undefined
  87. 48d50: Alrmdat execs root
  88. 56990: sumvar
  89. 60810: regm ctsm mlgm prdm
  90. 60bf0: pattern
  91. 63xxx: more tables...
  92. 65260: UNKNOWN
  93. 65330: GROB
  94. 69aa0: Radix
  95. 69ac0: Exp
  96. 69af0: buffm
  97. 69b20: ManOpm
  98. 69b50: Modem                <--------hmmmmmmmmmmmmmm?
  99. 69ce0: unbound
  100. 6fxxx: block of zeros at end of 6xxxx block
  101. 719b0: SPD DISP IROM IRAM KBDI KBD2 KBD ESD 210V 210V ESD OK OK-48 FAIL
  102.        U_LB UART U_LB XMIT Time Init Starti Fail: Port RAM1 RAM2 IRLB IRIO 
  103.        SEND RECV Version HP48-A Copyright HP 1989 Insufficient memory 
  104.        Undefined location Memory Clear
  105. 73xxx: lots of error messages
  106. 7373e: - 7a741: unit names
  107. 73746: - 7b757: fcn names
  108. 79xxx: - 7axxx: interesting patterns
  109. 7f9b0: homedir
  110. 7fff0: HP48-A
  111.  
  112. 8xxxx: - fxxxx: I haven't looked at pages 8 through f apart from e:
  113. exxxx: this whole 32k page is a repeat of page 6xxxx.
  114.  
  115.      I threw together the following C code to generate the translated 48
  116. core dump (no apologies for assembly/Pascal in C :-).  Note that
  117. characters below ASCII 32 (space) or above ASCII 127 (DEL) were
  118. translated to spaces.  A good modification would be to send out streams
  119. of text with just addresses embedded every 128 bytes, for easier reading
  120. and searching for text strings.
  121.  
  122. Source for program: asci2hex
  123.  
  124. /* usage: asci2hex < 48_core[input file] > 48_core.asc[output file]
  125. #include <stdio.h>
  126. #include <stdlib.h>
  127.  
  128. main()
  129.    {
  130.    int c, i, j, f, g, l;
  131.    char a[23], b[9];
  132.    f=0; g=0;
  133.    while ((c=getchar()) != EOF)
  134.       {
  135.       a[f++]=c;
  136.       if (c==58)
  137.          {
  138.          for (i=0; i<8; i++)
  139.             {
  140.             c=getchar(); a[f++]=c; if (c<60) c=c-48; else c=c-55; l=c;
  141.             c=getchar(); a[f++]=c; if (c<60) c=c-48; else c=c-55;
  142.             c=c*16+l; if ((c<32)|(c>126)) c=32; b[g++]=c;
  143.             a[22]='\0'; b[8]='\0';
  144.             }
  145.          printf("%s %s", a, b); f=0; g=0;
  146.          }
  147.       }
  148.    }
  149.  
  150.  
  151.